Coop Data

NOAA/NWS Cooperative Observer Network

Downloading from the Iowa Environmental Mesonet. (Data taken from the neighboring COOP analysis

Station: DEL NORTE 2E, CO2184

COOP_stations <- read.csv("C:/Users/13074/Documents/ESS580/thesis_project/All_COOP_stations/data_raw/COOP_stations.csv", header = TRUE)
#str(COOP_stations)
COOP_stations$Date <- ymd(COOP_stations$day)
del_norte_clean <- COOP_stations %>% # filter for the timeframe
  filter(station == "CO2184") %>% 
  addWaterYear() %>%
  mutate(daymonth = format(as.Date(Date), "%d-%m")) %>% 
  group_by(waterYear)%>% 
  mutate(waterDay = (as.integer(difftime(Date, ymd(paste0(waterYear - 1 ,'-09-30')), units = "days")))) %>%   na.omit()
del_norte_clean <- del_norte_clean %>% 
  mutate(avg_T_c = (highc+lowc)/2) %>% 
  filter(waterYear <= 2022)
write.csv(del_norte_clean,"C:/Users/13074/Documents/ESS580/thesis_project/del_norte/data_clean/del_norte_clean.csv", row.names = FALSE)

Figure check

str(del_norte_clean)
## grouped_df [47,389 x 13] (S3: grouped_df/tbl_df/tbl/data.frame)
##  $ station     : chr [1:47389] "CO2184" "CO2184" "CO2184" "CO2184" ...
##  $ station_name: chr [1:47389] "DEL NORTE 2E" "DEL NORTE 2E" "DEL NORTE 2E" "DEL NORTE 2E" ...
##  $ lat         : num [1:47389] 37.7 37.7 37.7 37.7 37.7 ...
##  $ lon         : num [1:47389] -106 -106 -106 -106 -106 ...
##  $ day         : chr [1:47389] "1893/01/01" "1893/01/02" "1893/01/03" "1893/01/04" ...
##  $ doy         : int [1:47389] 1 2 3 4 5 6 7 8 9 10 ...
##  $ highc       : num [1:47389] 2.2 1.7 9.4 7.2 7.2 7.8 7.2 5 4.4 7.2 ...
##  $ lowc        : num [1:47389] -13.3 -12.2 -11.7 -11.7 -12.8 -13.3 -13.3 -12.2 -11.1 -11.7 ...
##  $ Date        : Date[1:47389], format: "1893-01-01" "1893-01-02" ...
##  $ waterYear   : num [1:47389] 1893 1893 1893 1893 1893 ...
##  $ daymonth    : chr [1:47389] "01-01" "02-01" "03-01" "04-01" ...
##  $ waterDay    : int [1:47389] 93 94 95 96 97 98 99 100 101 102 ...
##  $ avg_T_c     : num [1:47389] -5.55 -5.25 -1.15 -2.25 -2.8 -2.75 -3.05 -3.6 -3.35 -2.25 ...
##  - attr(*, "groups")= tibble [130 x 2] (S3: tbl_df/tbl/data.frame)
##   ..$ waterYear: num [1:130] 1893 1894 1895 1896 1897 ...
##   ..$ .rows    : list<int> [1:130] 
##   .. ..$ : int [1:273] 1 2 3 4 5 6 7 8 9 10 ...
##   .. ..$ : int [1:365] 274 275 276 277 278 279 280 281 282 283 ...
##   .. ..$ : int [1:365] 639 640 641 642 643 644 645 646 647 648 ...
##   .. ..$ : int [1:366] 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 ...
##   .. ..$ : int [1:365] 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 ...
##   .. ..$ : int [1:365] 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 ...
##   .. ..$ : int [1:365] 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 ...
##   .. ..$ : int [1:365] 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 ...
##   .. ..$ : int [1:365] 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 ...
##   .. ..$ : int [1:365] 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 ...
##   .. ..$ : int [1:365] 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 ...
##   .. ..$ : int [1:366] 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 ...
##   .. ..$ : int [1:365] 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 ...
##   .. ..$ : int [1:365] 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 ...
##   .. ..$ : int [1:365] 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 ...
##   .. ..$ : int [1:366] 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 ...
##   .. ..$ : int [1:365] 5752 5753 5754 5755 5756 5757 5758 5759 5760 5761 ...
##   .. ..$ : int [1:365] 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 ...
##   .. ..$ : int [1:365] 6482 6483 6484 6485 6486 6487 6488 6489 6490 6491 ...
##   .. ..$ : int [1:366] 6847 6848 6849 6850 6851 6852 6853 6854 6855 6856 ...
##   .. ..$ : int [1:365] 7213 7214 7215 7216 7217 7218 7219 7220 7221 7222 ...
##   .. ..$ : int [1:365] 7578 7579 7580 7581 7582 7583 7584 7585 7586 7587 ...
##   .. ..$ : int [1:365] 7943 7944 7945 7946 7947 7948 7949 7950 7951 7952 ...
##   .. ..$ : int [1:366] 8308 8309 8310 8311 8312 8313 8314 8315 8316 8317 ...
##   .. ..$ : int [1:365] 8674 8675 8676 8677 8678 8679 8680 8681 8682 8683 ...
##   .. ..$ : int [1:365] 9039 9040 9041 9042 9043 9044 9045 9046 9047 9048 ...
##   .. ..$ : int [1:365] 9404 9405 9406 9407 9408 9409 9410 9411 9412 9413 ...
##   .. ..$ : int [1:366] 9769 9770 9771 9772 9773 9774 9775 9776 9777 9778 ...
##   .. ..$ : int [1:365] 10135 10136 10137 10138 10139 10140 10141 10142 10143 10144 ...
##   .. ..$ : int [1:365] 10500 10501 10502 10503 10504 10505 10506 10507 10508 10509 ...
##   .. ..$ : int [1:365] 10865 10866 10867 10868 10869 10870 10871 10872 10873 10874 ...
##   .. ..$ : int [1:366] 11230 11231 11232 11233 11234 11235 11236 11237 11238 11239 ...
##   .. ..$ : int [1:365] 11596 11597 11598 11599 11600 11601 11602 11603 11604 11605 ...
##   .. ..$ : int [1:365] 11961 11962 11963 11964 11965 11966 11967 11968 11969 11970 ...
##   .. ..$ : int [1:365] 12326 12327 12328 12329 12330 12331 12332 12333 12334 12335 ...
##   .. ..$ : int [1:366] 12691 12692 12693 12694 12695 12696 12697 12698 12699 12700 ...
##   .. ..$ : int [1:365] 13057 13058 13059 13060 13061 13062 13063 13064 13065 13066 ...
##   .. ..$ : int [1:365] 13422 13423 13424 13425 13426 13427 13428 13429 13430 13431 ...
##   .. ..$ : int [1:365] 13787 13788 13789 13790 13791 13792 13793 13794 13795 13796 ...
##   .. ..$ : int [1:366] 14152 14153 14154 14155 14156 14157 14158 14159 14160 14161 ...
##   .. ..$ : int [1:365] 14518 14519 14520 14521 14522 14523 14524 14525 14526 14527 ...
##   .. ..$ : int [1:365] 14883 14884 14885 14886 14887 14888 14889 14890 14891 14892 ...
##   .. ..$ : int [1:365] 15248 15249 15250 15251 15252 15253 15254 15255 15256 15257 ...
##   .. ..$ : int [1:366] 15613 15614 15615 15616 15617 15618 15619 15620 15621 15622 ...
##   .. ..$ : int [1:365] 15979 15980 15981 15982 15983 15984 15985 15986 15987 15988 ...
##   .. ..$ : int [1:365] 16344 16345 16346 16347 16348 16349 16350 16351 16352 16353 ...
##   .. ..$ : int [1:365] 16709 16710 16711 16712 16713 16714 16715 16716 16717 16718 ...
##   .. ..$ : int [1:366] 17074 17075 17076 17077 17078 17079 17080 17081 17082 17083 ...
##   .. ..$ : int [1:365] 17440 17441 17442 17443 17444 17445 17446 17447 17448 17449 ...
##   .. ..$ : int [1:365] 17805 17806 17807 17808 17809 17810 17811 17812 17813 17814 ...
##   .. ..$ : int [1:365] 18170 18171 18172 18173 18174 18175 18176 18177 18178 18179 ...
##   .. ..$ : int [1:366] 18535 18536 18537 18538 18539 18540 18541 18542 18543 18544 ...
##   .. ..$ : int [1:365] 18901 18902 18903 18904 18905 18906 18907 18908 18909 18910 ...
##   .. ..$ : int [1:365] 19266 19267 19268 19269 19270 19271 19272 19273 19274 19275 ...
##   .. ..$ : int [1:365] 19631 19632 19633 19634 19635 19636 19637 19638 19639 19640 ...
##   .. ..$ : int [1:366] 19996 19997 19998 19999 20000 20001 20002 20003 20004 20005 ...
##   .. ..$ : int [1:365] 20362 20363 20364 20365 20366 20367 20368 20369 20370 20371 ...
##   .. ..$ : int [1:365] 20727 20728 20729 20730 20731 20732 20733 20734 20735 20736 ...
##   .. ..$ : int [1:365] 21092 21093 21094 21095 21096 21097 21098 21099 21100 21101 ...
##   .. ..$ : int [1:366] 21457 21458 21459 21460 21461 21462 21463 21464 21465 21466 ...
##   .. ..$ : int [1:365] 21823 21824 21825 21826 21827 21828 21829 21830 21831 21832 ...
##   .. ..$ : int [1:365] 22188 22189 22190 22191 22192 22193 22194 22195 22196 22197 ...
##   .. ..$ : int [1:365] 22553 22554 22555 22556 22557 22558 22559 22560 22561 22562 ...
##   .. ..$ : int [1:366] 22918 22919 22920 22921 22922 22923 22924 22925 22926 22927 ...
##   .. ..$ : int [1:365] 23284 23285 23286 23287 23288 23289 23290 23291 23292 23293 ...
##   .. ..$ : int [1:365] 23649 23650 23651 23652 23653 23654 23655 23656 23657 23658 ...
##   .. ..$ : int [1:365] 24014 24015 24016 24017 24018 24019 24020 24021 24022 24023 ...
##   .. ..$ : int [1:366] 24379 24380 24381 24382 24383 24384 24385 24386 24387 24388 ...
##   .. ..$ : int [1:365] 24745 24746 24747 24748 24749 24750 24751 24752 24753 24754 ...
##   .. ..$ : int [1:365] 25110 25111 25112 25113 25114 25115 25116 25117 25118 25119 ...
##   .. ..$ : int [1:365] 25475 25476 25477 25478 25479 25480 25481 25482 25483 25484 ...
##   .. ..$ : int [1:366] 25840 25841 25842 25843 25844 25845 25846 25847 25848 25849 ...
##   .. ..$ : int [1:365] 26206 26207 26208 26209 26210 26211 26212 26213 26214 26215 ...
##   .. ..$ : int [1:365] 26571 26572 26573 26574 26575 26576 26577 26578 26579 26580 ...
##   .. ..$ : int [1:365] 26936 26937 26938 26939 26940 26941 26942 26943 26944 26945 ...
##   .. ..$ : int [1:366] 27301 27302 27303 27304 27305 27306 27307 27308 27309 27310 ...
##   .. ..$ : int [1:365] 27667 27668 27669 27670 27671 27672 27673 27674 27675 27676 ...
##   .. ..$ : int [1:365] 28032 28033 28034 28035 28036 28037 28038 28039 28040 28041 ...
##   .. ..$ : int [1:365] 28397 28398 28399 28400 28401 28402 28403 28404 28405 28406 ...
##   .. ..$ : int [1:366] 28762 28763 28764 28765 28766 28767 28768 28769 28770 28771 ...
##   .. ..$ : int [1:365] 29128 29129 29130 29131 29132 29133 29134 29135 29136 29137 ...
##   .. ..$ : int [1:365] 29493 29494 29495 29496 29497 29498 29499 29500 29501 29502 ...
##   .. ..$ : int [1:365] 29858 29859 29860 29861 29862 29863 29864 29865 29866 29867 ...
##   .. ..$ : int [1:366] 30223 30224 30225 30226 30227 30228 30229 30230 30231 30232 ...
##   .. ..$ : int [1:365] 30589 30590 30591 30592 30593 30594 30595 30596 30597 30598 ...
##   .. ..$ : int [1:365] 30954 30955 30956 30957 30958 30959 30960 30961 30962 30963 ...
##   .. ..$ : int [1:365] 31319 31320 31321 31322 31323 31324 31325 31326 31327 31328 ...
##   .. ..$ : int [1:366] 31684 31685 31686 31687 31688 31689 31690 31691 31692 31693 ...
##   .. ..$ : int [1:365] 32050 32051 32052 32053 32054 32055 32056 32057 32058 32059 ...
##   .. ..$ : int [1:365] 32415 32416 32417 32418 32419 32420 32421 32422 32423 32424 ...
##   .. ..$ : int [1:365] 32780 32781 32782 32783 32784 32785 32786 32787 32788 32789 ...
##   .. ..$ : int [1:366] 33145 33146 33147 33148 33149 33150 33151 33152 33153 33154 ...
##   .. ..$ : int [1:365] 33511 33512 33513 33514 33515 33516 33517 33518 33519 33520 ...
##   .. ..$ : int [1:365] 33876 33877 33878 33879 33880 33881 33882 33883 33884 33885 ...
##   .. ..$ : int [1:365] 34241 34242 34243 34244 34245 34246 34247 34248 34249 34250 ...
##   .. ..$ : int [1:366] 34606 34607 34608 34609 34610 34611 34612 34613 34614 34615 ...
##   .. ..$ : int [1:365] 34972 34973 34974 34975 34976 34977 34978 34979 34980 34981 ...
##   .. ..$ : int [1:365] 35337 35338 35339 35340 35341 35342 35343 35344 35345 35346 ...
##   .. ..$ : int [1:365] 35702 35703 35704 35705 35706 35707 35708 35709 35710 35711 ...
##   .. .. [list output truncated]
##   .. ..@ ptype: int(0) 
##   ..- attr(*, ".drop")= logi TRUE
ggplot(del_norte_clean, aes(x = Date, y = avg_T_c)) +
  geom_line() + #lwd = 2) +
  theme_few() +
  geom_smooth(method = "lm", se=FALSE) +
  ylab('Daily temperature (°C)') + 
  xlab('Date')

#Check for outliers....

#dygraph

del_norte_temp_xts <- xts(del_norte_clean$avg_T_c, order.by = del_norte_clean$Date)

dygraph(del_norte_temp_xts) %>%
  dyAxis("y", label = "Daily temperature (°C)") 

Detrending Data

There are two pieces of detrended: shifting by the mean and the sigmoidal detrending.

#SF figured out the yearly average by water year

#average water year temperature

del_norte_yearly_wy_aver <- del_norte_clean %>% 
  group_by(waterYear) %>% 
  mutate(aver_ann_temp = mean(avg_T_c))
#Average temperature by day for all water years:

del_norte_daily_wy_aver <- del_norte_yearly_wy_aver %>% 
  group_by(daymonth) %>% 
  mutate(aver_day_temp = mean(aver_ann_temp))

#average mean temperature by day for the period of record:

del_norte_daily_wy_aver <- del_norte_daily_wy_aver %>% 
  group_by(daymonth) %>% 
  mutate(all_ave_temp = mean(del_norte_daily_wy_aver$aver_day_temp))

#str(daily_wy_aver)
# try to show all years as means. 
del_norte_daily_wy_aver2 <- del_norte_daily_wy_aver %>% 
  #filter(waterYear == "1987" | waterYear == "2021") %>%
  group_by(waterDay) %>%
  mutate(date_temp = mean(avg_T_c))
  
del_norte_daily_wy_aver2$date_temp <- signif(del_norte_daily_wy_aver2$date_temp,3) #reduce the sig figs

ggplot(del_norte_daily_wy_aver2, aes(x = waterDay, y = date_temp))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  #geom_line(aes) +
  theme_few() +
  #geom_smooth(method = "lm", se=FALSE) +
  ylab('Average Daily temperature (°C)') + 
  xlab('Day of water year')

Standard Deviation

To figure out the standard deviation for each year, I want the “residual” for each daily value.

The standard deviation will be the daily residual minus the mean of the residuals by water year, summed and squared, then divided by the number of observations minus one. The square root of the resulting value of which is thus the standard deviation for the water year.

Determining residuals

del_norte_standard_dev <- del_norte_daily_wy_aver %>% 
  group_by(waterYear) %>% 
  mutate(residual = (all_ave_temp-aver_ann_temp)+avg_T_c-aver_day_temp) %>% 
  mutate(deviation = abs(residual-lag(residual)))

mean(del_norte_standard_dev$residual)
## [1] 8.984329e-18

The mean of the residuals is close enough to zero

Calculating standard deviation for the timeseries

del_norte_standard_dev_all <- del_norte_standard_dev %>% 
  group_by(waterYear) %>% 
  mutate(nmbr = n())

del_norte_standard_dev_all <- del_norte_standard_dev_all %>% 
  group_by(waterYear) %>% 
  mutate(resid_mean = mean(residual)) %>%
  mutate(sd_1 = residual-resid_mean) %>% 
  mutate(sd_2 = (((sum((sd_1)^2))/((nmbr-1))))^(0.5)) %>%
  distinct(sd_2, .keep_all = TRUE) %>% 
   select(waterYear, sd_2)

del_norte_standard_dev_all %>% 
  kable(.,'html') %>%
  kable_styling() %>%
  scroll_box(width='250px',height='500px')
waterYear sd_2
1893 8.979718
1894 8.851700
1895 8.906800
1896 9.251056
1897 9.409362
1898 9.513998
1899 9.974064
1900 8.127594
1901 8.597576
1902 8.172789
1903 9.284592
1904 7.950715
1905 8.687898
1906 8.457594
1907 7.314434
1908 8.249309
1909 9.083332
1910 9.827816
1911 7.896427
1912 8.808679
1913 9.717830
1914 9.348744
1915 8.903395
1916 8.166327
1917 9.472689
1918 8.566605
1919 10.823780
1920 8.050914
1921 8.341861
1922 8.958365
1923 8.379056
1924 9.137507
1925 9.266263
1926 9.090550
1927 7.491059
1928 7.913288
1929 8.910828
1930 8.782460
1931 9.123453
1932 10.032434
1933 10.217915
1934 8.044477
1935 8.126533
1936 8.352110
1937 9.066222
1938 8.566413
1939 9.963805
1940 9.226963
1941 9.848540
1942 9.060178
1943 8.378389
1944 9.772014
1945 8.372183
1946 9.071970
1947 8.124453
1948 9.947474
1949 9.787779
1950 7.969041
1951 8.370558
1952 9.578282
1953 9.540180
1954 8.923035
1955 9.059211
1956 8.499768
1957 8.120686
1958 8.987526
1959 8.536337
1960 9.345674
1961 8.642392
1962 9.309952
1963 8.880486
1964 9.482318
1965 9.275867
1966 9.508584
1967 7.977060
1968 9.236097
1969 8.660315
1970 8.581779
1971 8.432437
1972 8.383483
1973 10.005617
1974 8.774225
1975 9.329783
1976 8.604939
1977 9.508426
1978 7.356234
1979 10.469486
1980 8.827866
1981 7.789883
1982 8.550876
1983 8.467026
1984 10.849444
1985 9.319502
1986 8.113988
1987 8.927542
1988 10.119937
1989 9.675748
1990 8.418110
1991 9.281145
1992 10.281144
1993 9.680262
1994 9.225343
1995 7.731619
1996 8.177627
1997 8.926004
1998 9.262609
1999 7.728676
2000 8.349308
2001 9.252936
2002 9.751849
2003 8.881305
2004 9.143171
2005 8.661164
2006 8.679355
2007 10.100548
2008 10.760151
2009 8.979920
2010 9.890094
2011 9.410770
2012 10.070943
2013 11.255271
2014 10.014034
2015 8.431960
2016 8.994514
2017 8.837950
2018 8.041730
2019 9.545068
2020 10.452448
2021 9.949723
2022 9.424251
ggplot(del_norte_standard_dev_all, aes(x = waterYear, y = sd_2))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  #geom_line(aes) +
  theme_few() +
  geom_smooth(method = "lm", se=FALSE) +
  ylab('SD') + 
  xlab('Water year')

Full timeseries Mann-Kendall & Sen’s Slope

sd_mk_all <- mk.test(del_norte_standard_dev_all$sd_2)
print(sd_mk_all)
## 
##  Mann-Kendall trend test
## 
## data:  del_norte_standard_dev_all$sd_2
## z = 2.1736, n = 130, p-value = 0.02974
## alternative hypothesis: true S is not equal to 0
## sample estimates:
##            S         varS          tau 
## 1.081000e+03 2.468917e+05 1.289207e-01
sd_sens_all <- sens.slope(del_norte_standard_dev_all$sd_2)
print(sd_sens_all)
## 
##  Sen's slope
## 
## data:  del_norte_standard_dev_all$sd_2
## z = 2.1736, n = 130, p-value = 0.02974
## alternative hypothesis: true z is not equal to 0
## 95 percent confidence interval:
##  0.000418161 0.007743851
## sample estimates:
## Sen's slope 
## 0.004197596

Checking a random year from the timeseries.

del_norte_standard_dev_87 <- del_norte_standard_dev %>% 
  filter(waterYear == 1987) %>% 
  group_by(waterYear) %>% 
  mutate(resid_mean = mean(residual)) %>%
           mutate(sd_1 = residual-resid_mean)

del_norte_standard_dev_87 <- del_norte_standard_dev_87 %>%
  group_by(waterYear) %>%
  mutate(sd_2 = (((sum((sd_1)^2))/((sum(tabulate(del_norte_standard_dev_87$waterDay)))-1)))^(0.5))

head(del_norte_standard_dev_87$sd_2, 1)
## [1] 8.927542

Looks good.

Summer temperature standard deviation

del_norte_standard_dev_all_summer <- del_norte_standard_dev %>%
  filter(waterDay >= 244 & waterDay <= 335) %>% # this might be better off as daymonth rather than day of water year due to leap year
  group_by(waterYear) %>% 
  mutate(nmbr = n())

del_norte_standard_dev_all_summer <- del_norte_standard_dev_all_summer %>% 
  group_by(waterYear) %>% 
  mutate(resid_mean = mean(residual)) %>%
  mutate(sd_1 = residual-resid_mean) %>% 
  mutate(sd_2 = (((sum((sd_1)^2))/((nmbr-1))))^(0.5)) %>%
  distinct(sd_2, .keep_all = TRUE) %>% 
   select(waterYear, sd_2)

del_norte_standard_dev_all_summer %>% 
  kable(.,'html') %>%
  kable_styling() %>%
  scroll_box(width='250px',height='500px')
waterYear sd_2
1893 1.727809
1894 2.418635
1895 2.156296
1896 1.428480
1897 1.706392
1898 2.475933
1899 2.096717
1900 2.169215
1901 2.822673
1902 2.183144
1903 2.813083
1904 2.133639
1905 1.517174
1906 2.097549
1907 2.530642
1908 2.538768
1909 2.210197
1910 1.833385
1911 1.611191
1912 2.183569
1913 2.208411
1914 1.976876
1915 2.111875
1916 2.038179
1917 2.714747
1918 1.799706
1919 3.057425
1920 2.001237
1921 2.250818
1922 1.921557
1923 2.260009
1924 1.957020
1925 2.178471
1926 1.685967
1927 1.968418
1928 2.203869
1929 1.946804
1930 2.109897
1931 1.888859
1932 2.515281
1933 1.773078
1934 2.178365
1935 1.651749
1936 2.257309
1937 3.188203
1938 2.076894
1939 2.112502
1940 2.210223
1941 2.690629
1942 1.918279
1943 2.512231
1944 2.445895
1945 2.823918
1946 2.100722
1947 2.491997
1948 1.911987
1949 2.058556
1950 2.239356
1951 2.907449
1952 1.634368
1953 1.999868
1954 2.631681
1955 2.634244
1956 1.667289
1957 2.449010
1958 1.856575
1959 1.627719
1960 2.053249
1961 1.778496
1962 2.182501
1963 2.427718
1964 2.764745
1965 2.240313
1966 2.299862
1967 2.741355
1968 1.946541
1969 2.792877
1970 2.980101
1971 2.042169
1972 1.974039
1973 2.613519
1974 2.491231
1975 2.126186
1976 2.117475
1977 1.421161
1978 1.768258
1979 2.387549
1980 2.458460
1981 2.449184
1982 2.525316
1983 2.801718
1984 2.391702
1985 2.143789
1986 1.884837
1987 1.827067
1988 2.187482
1989 2.292524
1990 2.135460
1991 2.107556
1992 2.327857
1993 2.347764
1994 1.627795
1995 2.551853
1996 2.100201
1997 1.926402
1998 2.600348
1999 2.410172
2000 1.600572
2001 2.019630
2002 1.845975
2003 2.801925
2004 2.332780
2005 2.619140
2006 1.996965
2007 2.363320
2008 2.356730
2009 2.488327
2010 1.954418
2011 2.097681
2012 1.719314
2013 2.269814
2014 2.174603
2015 2.003585
2016 2.357237
2017 2.187614
2018 2.098239
2019 2.398375
2020 2.058420
2021 2.540783
2022 2.216535
ggplot(del_norte_standard_dev_all_summer, aes(x = waterYear, y = sd_2))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  #geom_line(aes) +
  theme_few() +
  geom_smooth(method = "lm", se=FALSE) +
  ylab('SD') + 
  xlab('Water year')

Jun-Aug standard deviation for water years 1900-2021

Mann-Kendall & Sen’s Slope

Summer standard deviations.

sd_mk_summer <- mk.test(del_norte_standard_dev_all_summer$sd_2)
print(sd_mk_summer)
## 
##  Mann-Kendall trend test
## 
## data:  del_norte_standard_dev_all_summer$sd_2
## z = 0.97407, n = 130, p-value = 0.33
## alternative hypothesis: true S is not equal to 0
## sample estimates:
##            S         varS          tau 
## 4.850000e+02 2.468917e+05 5.784138e-02
sd_sens_summer <- sens.slope(del_norte_standard_dev_all_summer$sd_2)
print(sd_sens_summer)
## 
##  Sen's slope
## 
## data:  del_norte_standard_dev_all_summer$sd_2
## z = 0.97407, n = 130, p-value = 0.33
## alternative hypothesis: true z is not equal to 0
## 95 percent confidence interval:
##  -0.0008552314  0.0024795109
## sample estimates:
##  Sen's slope 
## 0.0008780598

Winter temperature standard deviation

del_norte_standard_dev_all_winter <- del_norte_standard_dev %>%
  filter(waterDay >= 32 & waterDay <= 182) %>% # this might be better off as daymonth rather than day of water year due to leap year
  group_by(waterYear) %>% 
  mutate(nmbr = n())

del_norte_standard_dev_all_winter <- del_norte_standard_dev_all_winter %>% 
  group_by(waterYear) %>% 
  mutate(resid_mean = mean(residual)) %>%
  mutate(sd_1 = residual-resid_mean) %>% 
  mutate(sd_2 = (((sum((sd_1)^2))/((nmbr-1))))^(0.5)) %>%
  distinct(sd_2, .keep_all = TRUE) %>% 
   select(waterYear, sd_2)

del_norte_standard_dev_all_winter %>% 
  kable(.,'html') %>%
  kable_styling() %>%
  scroll_box(width='250px',height='500px')
waterYear sd_2
1893 3.812132
1894 4.981612
1895 5.436264
1896 4.889630
1897 4.585550
1898 5.353745
1899 5.607216
1900 4.269878
1901 4.530582
1902 4.597495
1903 5.526387
1904 5.206859
1905 5.133658
1906 5.077123
1907 4.358358
1908 4.412752
1909 4.229366
1910 6.968367
1911 4.896945
1912 4.580161
1913 5.085163
1914 5.872962
1915 5.162417
1916 5.157265
1917 4.772355
1918 5.357050
1919 5.744899
1920 4.304088
1921 5.124744
1922 5.805832
1923 3.223145
1924 4.778784
1925 6.710699
1926 4.584791
1927 4.212530
1928 5.463838
1929 4.928490
1930 5.095778
1931 4.672019
1932 6.935624
1933 7.205489
1934 4.944951
1935 4.996683
1936 4.112544
1937 5.279160
1938 4.746520
1939 5.730015
1940 6.025870
1941 5.207250
1942 5.101606
1943 4.876755
1944 5.530750
1945 4.144183
1946 5.251536
1947 4.061228
1948 4.944721
1949 5.772677
1950 5.421970
1951 4.602244
1952 4.354522
1953 5.964482
1954 5.513057
1955 5.699723
1956 5.006301
1957 4.612028
1958 4.334632
1959 4.960693
1960 5.748757
1961 5.075277
1962 5.337550
1963 6.370637
1964 5.048745
1965 5.538746
1966 6.604113
1967 5.624457
1968 6.160756
1969 4.621326
1970 5.228015
1971 6.245602
1972 6.083051
1973 4.687616
1974 6.499732
1975 6.000355
1976 5.653576
1977 5.854551
1978 4.350143
1979 6.844562
1980 4.097621
1981 3.789676
1982 5.761291
1983 3.986201
1984 6.389241
1985 5.610059
1986 5.596973
1987 4.293256
1988 6.239717
1989 6.819946
1990 5.353260
1991 6.094839
1992 5.261986
1993 5.599849
1994 5.074173
1995 4.450243
1996 4.845698
1997 5.565923
1998 4.838413
1999 4.354195
2000 4.682528
2001 4.573232
2002 5.566153
2003 4.758568
2004 6.416967
2005 4.855042
2006 4.991426
2007 7.037930
2008 7.259591
2009 5.728028
2010 5.138766
2011 5.785219
2012 6.031951
2013 7.480569
2014 6.421180
2015 5.407826
2016 5.599118
2017 6.233926
2018 3.819239
2019 5.155843
2020 6.145027
2021 5.187661
2022 5.482004
ggplot(del_norte_standard_dev_all_winter, aes(x = waterYear, y = sd_2))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  #geom_line(aes) +
  theme_few() +
  geom_smooth(method = "lm", se=FALSE) +
  ylab('SD') + 
  xlab('Water year')

Nov-Mar standard deviation for water years 1900-2021

Mann-Kendall & Sen’s Slope

Winter standard deviations.

sd_mk_winter <- mk.test(del_norte_standard_dev_all_winter$sd_2)
print(sd_mk_winter)
## 
##  Mann-Kendall trend test
## 
## data:  del_norte_standard_dev_all_winter$sd_2
## z = 3.047, n = 130, p-value = 0.002311
## alternative hypothesis: true S is not equal to 0
## sample estimates:
##            S         varS          tau 
## 1.515000e+03 2.468917e+05 1.806798e-01
sd_sens_winter <- sens.slope(del_norte_standard_dev_all_winter$sd_2)
print(sd_sens_winter)
## 
##  Sen's slope
## 
## data:  del_norte_standard_dev_all_winter$sd_2
## z = 3.047, n = 130, p-value = 0.002311
## alternative hypothesis: true z is not equal to 0
## 95 percent confidence interval:
##  0.002092463 0.009623476
## sample estimates:
## Sen's slope 
## 0.005836173

Smaller time increments might be useful….

1987 - 2021

#average water year temperature

del_norte_yearly_wy_aver_87_21 <- del_norte_clean %>%
  filter(waterYear >= 1987 & waterYear <= 2021) %>% 
  group_by(waterYear) %>% 
  mutate(aver_ann_temp = mean(avg_T_c))

#Average temperature by day for all water years:

del_norte_daily_wy_aver_87_21 <- del_norte_yearly_wy_aver_87_21 %>% 
  group_by(daymonth) %>% 
  mutate(aver_day_temp = mean(aver_ann_temp))

#average mean temperature by day for the period of record:

del_norte_daily_wy_aver_87_21 <- del_norte_daily_wy_aver_87_21 %>% 
  group_by(daymonth) %>% 
  mutate(all_ave_temp = mean(del_norte_daily_wy_aver_87_21$aver_day_temp)) %>% 
  group_by(waterYear) %>% 
  mutate(nmbr = n())
  

del_norte_standard_dev_87_21 <- del_norte_daily_wy_aver_87_21 %>% 
  group_by(waterYear) %>% 
  mutate(residual = (all_ave_temp-aver_ann_temp)+avg_T_c-aver_day_temp) %>% 
  mutate(deviation = abs(residual-lag(residual)))

del_norte_standard_dev_87_21 <- del_norte_standard_dev_87_21 %>% 
  group_by(waterYear) %>% 
  mutate(resid_mean = mean(residual)) %>%
  mutate(sd_1 = residual-resid_mean) %>% 
  mutate(sd_2 = (((sum((sd_1)^2))/((nmbr-1))))^(0.5)) %>%
  distinct(sd_2, .keep_all = TRUE) %>% 
   select(waterYear, sd_2)


del_norte_standard_dev_87_21 %>% 
  kable(.,'html') %>%
  kable_styling() %>%
  scroll_box(width='250px',height='500px')
waterYear sd_2
1987 8.930130
1988 10.122254
1989 9.678175
1990 8.420811
1991 9.283741
1992 10.284042
1993 9.683157
1994 9.228863
1995 7.734984
1996 8.180476
1997 8.928496
1998 9.265695
1999 7.731617
2000 8.352194
2001 9.255820
2002 9.754404
2003 8.884745
2004 9.145398
2005 8.664351
2006 8.681983
2007 10.102809
2008 10.762244
2009 8.982543
2010 9.892880
2011 9.413105
2012 10.074408
2013 11.257504
2014 10.017296
2015 8.434601
2016 8.996902
2017 8.840504
2018 8.044550
2019 9.547470
2020 10.455624
2021 9.952095
ggplot(del_norte_standard_dev_87_21, aes(x = waterYear, y = sd_2))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  #geom_line(aes) +
  theme_few() +
  geom_smooth(method = "lm", se=FALSE) +
  ylab('SD') + 
  xlab('Water year')

SD for water years 1987 - 2021

1987 - 2021 Mann-Kendall & Sen’s Slope

sd_mk_87_21 <- mk.test(del_norte_standard_dev_87_21$sd_2)
print(sd_mk_87_21)
## 
##  Mann-Kendall trend test
## 
## data:  del_norte_standard_dev_87_21$sd_2
## z = 0.90889, n = 35, p-value = 0.3634
## alternative hypothesis: true S is not equal to 0
## sample estimates:
##            S         varS          tau 
##   65.0000000 4958.3333333    0.1092437
sd_sens_87_21 <- sens.slope(del_norte_standard_dev_87_21$sd_2)
print(sd_sens_87_21)
## 
##  Sen's slope
## 
## data:  del_norte_standard_dev_87_21$sd_2
## z = 0.90889, n = 35, p-value = 0.3634
## alternative hypothesis: true z is not equal to 0
## 95 percent confidence interval:
##  -0.01476545  0.04697509
## sample estimates:
## Sen's slope 
##  0.01467934

Summer and Winter 87-21

Summer temperature standard deviation

# using the 1987- 2021 data frame

del_norte_standard_dev_all_87_21_summer <- del_norte_daily_wy_aver_87_21 %>%
  filter(waterDay >= 244 & waterDay <= 335) %>% # this might be better off as daymonth rather than day of water year due to leap year
  group_by(waterYear) %>% 
  mutate(residual = (all_ave_temp-aver_ann_temp)+avg_T_c-aver_day_temp) %>% 
  mutate(deviation = abs(residual-lag(residual))) %>% 
  group_by(waterYear) %>% 
  mutate(nmbr = n())

del_norte_standard_dev_all_87_21_summer <- del_norte_standard_dev_all_87_21_summer %>% 
  group_by(waterYear) %>% 
  mutate(resid_mean = mean(residual)) %>%
  mutate(sd_1 = residual-resid_mean) %>% 
  mutate(sd_2 = (((sum((sd_1)^2))/((nmbr-1))))^(0.5)) %>%
  distinct(sd_2, .keep_all = TRUE) %>% 
   select(waterYear, sd_2)

del_norte_standard_dev_all_87_21_summer %>% 
  kable(.,'html') %>%
  kable_styling() %>%
  scroll_box(width='250px',height='500px')
waterYear sd_2
1987 1.827067
1988 2.187482
1989 2.292524
1990 2.135460
1991 2.107556
1992 2.327857
1993 2.347764
1994 1.627795
1995 2.551853
1996 2.100201
1997 1.926402
1998 2.600348
1999 2.410172
2000 1.600572
2001 2.019630
2002 1.845975
2003 2.801925
2004 2.332780
2005 2.619140
2006 1.996965
2007 2.363320
2008 2.356730
2009 2.488327
2010 1.954418
2011 2.097681
2012 1.719314
2013 2.269814
2014 2.174603
2015 2.003585
2016 2.357237
2017 2.187614
2018 2.098239
2019 2.398375
2020 2.058420
2021 2.540783
ggplot(del_norte_standard_dev_all_87_21_summer, aes(x = waterYear, y = sd_2))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  #geom_line(aes) +
  theme_few() +
  geom_smooth(method = "lm", se=FALSE) +
  ylab('SD') + 
  xlab('Water year')

Summer season SD for water years 1987 - 2021

Mann-Kendall & Sen’s Slope

Summer 87-21 standard deviations.

sd_mk_summer <- mk.test(del_norte_standard_dev_all_87_21_summer$sd_2)
print(sd_mk_summer)
## 
##  Mann-Kendall trend test
## 
## data:  del_norte_standard_dev_all_87_21_summer$sd_2
## z = 0.59646, n = 35, p-value = 0.5509
## alternative hypothesis: true S is not equal to 0
## sample estimates:
##            S         varS          tau 
## 4.300000e+01 4.958333e+03 7.226891e-02
sd_sens_summer <- sens.slope(del_norte_standard_dev_all_summer$sd_2)
print(sd_sens_summer)
## 
##  Sen's slope
## 
## data:  del_norte_standard_dev_all_summer$sd_2
## z = 0.97407, n = 130, p-value = 0.33
## alternative hypothesis: true z is not equal to 0
## 95 percent confidence interval:
##  -0.0008552314  0.0024795109
## sample estimates:
##  Sen's slope 
## 0.0008780598

Winter temperature standard deviation

# using the 1987- 2021 data frame

del_norte_standard_dev_all_87_21_winter <- del_norte_daily_wy_aver_87_21 %>%
  filter(waterDay >= 32 & waterDay <= 182) %>% # this might be better off as daymonth rather than day of water year due to leap year
  group_by(waterYear) %>% 
  mutate(residual = (all_ave_temp-aver_ann_temp)+avg_T_c-aver_day_temp) %>% 
  mutate(deviation = abs(residual-lag(residual))) %>% 
  group_by(waterYear) %>% 
  mutate(nmbr = n())

del_norte_standard_dev_all_87_21_winter <- del_norte_standard_dev_all_87_21_winter %>% 
  group_by(waterYear) %>% 
  mutate(resid_mean = mean(residual)) %>%
  mutate(sd_1 = residual-resid_mean) %>% 
  mutate(sd_2 = (((sum((sd_1)^2))/((nmbr-1))))^(0.5)) %>%
  distinct(sd_2, .keep_all = TRUE) %>% 
   select(waterYear, sd_2)

del_norte_standard_dev_all_87_21_winter %>% 
  kable(.,'html') %>%
  kable_styling() %>%
  scroll_box(width='250px',height='500px')
waterYear sd_2
1987 4.291683
1988 6.238628
1989 6.819955
1990 5.352755
1991 6.094841
1992 5.262368
1993 5.601879
1994 5.076673
1995 4.452943
1996 4.845125
1997 5.565064
1998 4.839934
1999 4.355520
2000 4.682187
2001 4.573170
2002 5.564876
2003 4.760996
2004 6.416296
2005 4.856311
2006 4.991127
2007 7.036398
2008 7.257361
2009 5.728112
2010 5.137456
2011 5.784141
2012 6.033747
2013 7.479222
2014 6.422942
2015 5.408038
2016 5.598398
2017 6.234240
2018 3.817411
2019 5.154514
2020 6.144972
2021 5.186261
ggplot(del_norte_standard_dev_all_87_21_winter, aes(x = waterYear, y = sd_2))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  #geom_line(aes) +
  theme_few() +
  geom_smooth(method = "lm", se=FALSE) +
  ylab('SD') + 
  xlab('Water year')

Winter season SD for water years 1987 - 2021

Mann-Kendall & Sen’s Slope

1987 - 2021 winter Mann-Kendall & Sen’s Slope

sd_mk_87_21_winter <- mk.test(del_norte_standard_dev_all_87_21_winter$sd_2)
print(sd_mk_87_21_winter)
## 
##  Mann-Kendall trend test
## 
## data:  del_norte_standard_dev_all_87_21_winter$sd_2
## z = 1.1077, n = 35, p-value = 0.268
## alternative hypothesis: true S is not equal to 0
## sample estimates:
##            S         varS          tau 
##   79.0000000 4958.3333333    0.1327731
sd_sens_87_21_winter <- sens.slope(del_norte_standard_dev_all_87_21_winter$sd_2)
print(sd_sens_87_21_winter)
## 
##  Sen's slope
## 
## data:  del_norte_standard_dev_all_87_21_winter$sd_2
## z = 1.1077, n = 35, p-value = 0.268
## alternative hypothesis: true z is not equal to 0
## 95 percent confidence interval:
##  -0.01866135  0.04552697
## sample estimates:
## Sen's slope 
##  0.02010625

1900-1915 minimum and maximum temperatures

early_del_norte <- del_norte_clean %>% 
  filter(waterYear >= 1893 & waterYear <= 1915)

del_norte_temp_min_xts <- xts(early_del_norte$lowc, order.by = early_del_norte$Date)

dygraph(del_norte_temp_min_xts) %>%
  dyAxis("y", label = "Daily min temperature (°C)") 

Daily minimum temperatures for water years 1900-1915

del_norte_temp_max_xts <- xts(early_del_norte$highc, order.by = early_del_norte$Date)

dygraph(del_norte_temp_max_xts) %>%
  dyAxis("y", label = "Daily max temperature (°C)") 

Daily minimum temperatures for water years 1900-1915

By groups of decades

1900-1930

#average water year temperature

del_norte_yearly_wy_aver_00_30 <- del_norte_clean %>%
  filter(waterYear >= 1900 & waterYear <= 1930) %>% 
  group_by(waterYear) %>% 
  mutate(aver_ann_temp = mean(avg_T_c))

#Average temperature by day for all water years:

del_norte_daily_wy_aver_00_30 <- del_norte_yearly_wy_aver_00_30 %>% 
  group_by(daymonth) %>% 
  mutate(aver_day_temp = mean(aver_ann_temp))

#average mean temperature by day for the period of record:

del_norte_daily_wy_aver_00_30 <- del_norte_daily_wy_aver_00_30 %>% 
  group_by(daymonth) %>% 
  mutate(all_ave_temp = mean(del_norte_daily_wy_aver_00_30$aver_day_temp)) %>% 
  group_by(waterYear) %>% 
  mutate(nmbr = n())
  

del_norte_standard_dev_00_30 <- del_norte_daily_wy_aver_00_30 %>% 
  group_by(waterYear) %>% 
  mutate(residual = (all_ave_temp-aver_ann_temp)+avg_T_c-aver_day_temp) %>% 
  mutate(deviation = abs(residual-lag(residual)))

del_norte_standard_dev_00_30 <- del_norte_standard_dev_00_30 %>% 
  group_by(waterYear) %>% 
  mutate(resid_mean = mean(residual)) %>%
  mutate(sd_1 = residual-resid_mean) %>% 
  mutate(sd_2 = (((sum((sd_1)^2))/((nmbr-1))))^(0.5)) %>%
  distinct(sd_2, .keep_all = TRUE) %>% 
   select(waterYear, sd_2)


del_norte_standard_dev_00_30 %>% 
  kable(.,'html') %>%
  kable_styling() %>%
  scroll_box(width='250px',height='500px')
waterYear sd_2
1900 8.130585
1901 8.599850
1902 8.175015
1903 9.286912
1904 7.953416
1905 8.690487
1906 8.460766
1907 7.317344
1908 8.251751
1909 9.086360
1910 9.830902
1911 7.899049
1912 8.811656
1913 9.720465
1914 9.351807
1915 8.905798
1916 8.169016
1917 9.475112
1918 8.568617
1919 10.826186
1920 8.053717
1921 8.345045
1922 8.959731
1923 8.381657
1924 9.139273
1925 9.268575
1926 9.093204
1927 7.493882
1928 7.915742
1929 8.913243
1930 8.785280
ggplot(del_norte_standard_dev_00_30, aes(x = waterYear, y = sd_2))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  #geom_line(aes) +
  theme_few() +
  geom_smooth(method = "lm", se=FALSE) +
  ylab('SD') + 
  xlab('Water year')

SD for water years 1900 - 1930

1900 - 1930 Mann-Kendall & Sen’s Slope

sd_mk_00_30 <- mk.test(del_norte_standard_dev_00_30$sd_2)
print(sd_mk_00_30)
## 
##  Mann-Kendall trend test
## 
## data:  del_norte_standard_dev_00_30$sd_2
## z = 0.64586, n = 31, p-value = 0.5184
## alternative hypothesis: true S is not equal to 0
## sample estimates:
##            S         varS          tau 
## 3.900000e+01 3.461667e+03 8.387097e-02
sd_sens_00_30 <- sens.slope(del_norte_standard_dev_00_30$sd_2)
print(sd_sens_00_30)
## 
##  Sen's slope
## 
## data:  del_norte_standard_dev_00_30$sd_2
## z = 0.64586, n = 31, p-value = 0.5184
## alternative hypothesis: true z is not equal to 0
## 95 percent confidence interval:
##  -0.02303493  0.03923581
## sample estimates:
## Sen's slope 
##   0.0109162

Summer and Winter 00-30

Summer temperature standard deviation

# using the 1900- 1930 data frame

del_norte_standard_dev_all_00_30_summer <- del_norte_daily_wy_aver_00_30 %>%
  filter(waterDay >= 244 & waterDay <= 335) %>% # this might be better off as daymonth rather than day of water year due to leap year
  group_by(waterYear) %>% 
  mutate(residual = (all_ave_temp-aver_ann_temp)+avg_T_c-aver_day_temp) %>% 
  mutate(deviation = abs(residual-lag(residual))) %>% 
  group_by(waterYear) %>% 
  mutate(nmbr = n())

del_norte_standard_dev_all_00_30_summer <- del_norte_standard_dev_all_00_30_summer %>% 
  group_by(waterYear) %>% 
  mutate(resid_mean = mean(residual)) %>%
  mutate(sd_1 = residual-resid_mean) %>% 
  mutate(sd_2 = (((sum((sd_1)^2))/((nmbr-1))))^(0.5)) %>%
  distinct(sd_2, .keep_all = TRUE) %>% 
   select(waterYear, sd_2)

del_norte_standard_dev_all_00_30_summer %>% 
  kable(.,'html') %>%
  kable_styling() %>%
  scroll_box(width='250px',height='500px')
waterYear sd_2
1900 2.169215
1901 2.822673
1902 2.183144
1903 2.813083
1904 2.133639
1905 1.517174
1906 2.097549
1907 2.530642
1908 2.538768
1909 2.210197
1910 1.833385
1911 1.611191
1912 2.183569
1913 2.208411
1914 1.976876
1915 2.111875
1916 2.038179
1917 2.714747
1918 1.799706
1919 3.057425
1920 2.001237
1921 2.250818
1922 1.921557
1923 2.260009
1924 1.957020
1925 2.178471
1926 1.685967
1927 1.968418
1928 2.203869
1929 1.946804
1930 2.109897
ggplot(del_norte_standard_dev_all_00_30_summer, aes(x = waterYear, y = sd_2))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  #geom_line(aes) +
  theme_few() +
  geom_smooth(method = "lm", se=FALSE) +
  ylab('SD') + 
  xlab('Water year')

Summer season SD for water years 1900 - 1930

Mann-Kendall & Sen’s Slope

Summer 00-30 standard deviations.

sd_mk_00_30_summer <- mk.test(del_norte_standard_dev_all_00_30_summer$sd_2)
print(sd_mk_00_30_summer)
## 
##  Mann-Kendall trend test
## 
## data:  del_norte_standard_dev_all_00_30_summer$sd_2
## z = -1.3937, n = 31, p-value = 0.1634
## alternative hypothesis: true S is not equal to 0
## sample estimates:
##            S         varS          tau 
##  -83.0000000 3461.6666667   -0.1784946
sd_sens_00_30_summer <- sens.slope(del_norte_standard_dev_all_00_30_summer$sd_2)
print(sd_sens_00_30_summer)
## 
##  Sen's slope
## 
## data:  del_norte_standard_dev_all_00_30_summer$sd_2
## z = -1.3937, n = 31, p-value = 0.1634
## alternative hypothesis: true z is not equal to 0
## 95 percent confidence interval:
##  -0.020715715  0.003660222
## sample estimates:
## Sen's slope 
## -0.00818977

Winter temperature standard deviation

# using the 00-30 data frame

del_norte_standard_dev_all_00_30_winter <- del_norte_daily_wy_aver_00_30 %>%
  filter(waterDay >= 32 & waterDay <= 182) %>% # this might be better off as daymonth rather than day of water year due to leap year
  group_by(waterYear) %>% 
  mutate(residual = (all_ave_temp-aver_ann_temp)+avg_T_c-aver_day_temp) %>% 
  mutate(deviation = abs(residual-lag(residual))) %>% 
  group_by(waterYear) %>% 
  mutate(nmbr = n())

del_norte_standard_dev_all_00_30_winter <- del_norte_standard_dev_all_00_30_winter %>% 
  group_by(waterYear) %>% 
  mutate(resid_mean = mean(residual)) %>%
  mutate(sd_1 = residual-resid_mean) %>% 
  mutate(sd_2 = (((sum((sd_1)^2))/((nmbr-1))))^(0.5)) %>%
  distinct(sd_2, .keep_all = TRUE) %>% 
   select(waterYear, sd_2)

del_norte_standard_dev_all_00_30_winter %>% 
  kable(.,'html') %>%
  kable_styling() %>%
  scroll_box(width='250px',height='500px')
waterYear sd_2
1900 4.270504
1901 4.528827
1902 4.595503
1903 5.525283
1904 5.207037
1905 5.133118
1906 5.078369
1907 4.358939
1908 4.412348
1909 4.230110
1910 6.969735
1911 4.896202
1912 4.581512
1913 5.084168
1914 5.873395
1915 5.161005
1916 5.157396
1917 4.771267
1918 5.354297
1919 5.743530
1920 4.304117
1921 5.126574
1922 5.802166
1923 3.221983
1924 4.773922
1925 6.709516
1926 4.584589
1927 4.213924
1928 5.463999
1929 4.928208
1930 5.096343
ggplot(del_norte_standard_dev_all_00_30_winter, aes(x = waterYear, y = sd_2))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  #geom_line(aes) +
  theme_few() +
  geom_smooth(method = "lm", se=FALSE) +
  ylab('SD') + 
  xlab('Water year')

Winter season SD for water years 1900 - 1930

Mann-Kendall & Sen’s Slope

1900 - 1930 winter Mann-Kendall & Sen’s Slope

sd_mk_00_30_winter <- mk.test(del_norte_standard_dev_all_00_30_winter$sd_2)
print(sd_mk_00_30_winter)
## 
##  Mann-Kendall trend test
## 
## data:  del_norte_standard_dev_all_00_30_winter$sd_2
## z = 0.64586, n = 31, p-value = 0.5184
## alternative hypothesis: true S is not equal to 0
## sample estimates:
##            S         varS          tau 
## 3.900000e+01 3.461667e+03 8.387097e-02
sd_sens_00_30_winter <- sens.slope(del_norte_standard_dev_all_00_30_winter$sd_2)
print(sd_sens_00_30_winter)
## 
##  Sen's slope
## 
## data:  del_norte_standard_dev_all_00_30_winter$sd_2
## z = 0.64586, n = 31, p-value = 0.5184
## alternative hypothesis: true z is not equal to 0
## 95 percent confidence interval:
##  -0.01663988  0.03935581
## sample estimates:
## Sen's slope 
##  0.01053375

1931-1960

#average water year temperature

del_norte_yearly_wy_aver_31_60 <- del_norte_clean %>%
  filter(waterYear >= 1931 & waterYear <= 1960) %>% 
  group_by(waterYear) %>% 
  mutate(aver_ann_temp = mean(avg_T_c))

#Average temperature by day for all water years:

del_norte_daily_wy_aver_31_60 <- del_norte_yearly_wy_aver_31_60 %>% 
  group_by(daymonth) %>% 
  mutate(aver_day_temp = mean(aver_ann_temp))

#average mean temperature by day for the period of record:

del_norte_daily_wy_aver_31_60 <- del_norte_daily_wy_aver_31_60 %>% 
  group_by(daymonth) %>% 
  mutate(all_ave_temp = mean(del_norte_daily_wy_aver_31_60$aver_day_temp)) %>% 
  group_by(waterYear) %>% 
  mutate(nmbr = n())
  

del_norte_standard_dev_31_60 <- del_norte_daily_wy_aver_31_60 %>% 
  group_by(waterYear) %>% 
  mutate(residual = (all_ave_temp-aver_ann_temp)+avg_T_c-aver_day_temp) %>% 
  mutate(deviation = abs(residual-lag(residual)))

del_norte_standard_dev_31_60 <- del_norte_standard_dev_31_60 %>% 
  group_by(waterYear) %>% 
  mutate(resid_mean = mean(residual)) %>%
  mutate(sd_1 = residual-resid_mean) %>% 
  mutate(sd_2 = (((sum((sd_1)^2))/((nmbr-1))))^(0.5)) %>%
  distinct(sd_2, .keep_all = TRUE) %>% 
   select(waterYear, sd_2)


del_norte_standard_dev_31_60 %>% 
  kable(.,'html') %>%
  kable_styling() %>%
  scroll_box(width='250px',height='500px')
waterYear sd_2
1931 9.126643
1932 10.035088
1933 10.220231
1934 8.047302
1935 8.128863
1936 8.355026
1937 9.068671
1938 8.568342
1939 9.965984
1940 9.228841
1941 9.850840
1942 9.062387
1943 8.381081
1944 9.774098
1945 8.374823
1946 9.074781
1947 8.127305
1948 9.949739
1949 9.790126
1950 7.971592
1951 8.372469
1952 9.581012
1953 9.543401
1954 8.926225
1955 9.060962
1956 8.502098
1957 8.123518
1958 8.990564
1959 8.538233
1960 9.347573
ggplot(del_norte_standard_dev_31_60, aes(x = waterYear, y = sd_2))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  #geom_line(aes) +
  theme_few() +
  geom_smooth(method = "lm", se=FALSE) +
  ylab('SD') + 
  xlab('Water year')

SD for water years 1931 - 1960

1931 - 1960 Mann-Kendall & Sen’s Slope

sd_mk_31_60 <- mk.test(del_norte_standard_dev_31_60$sd_2)
print(sd_mk_31_60)
## 
##  Mann-Kendall trend test
## 
## data:  del_norte_standard_dev_31_60$sd_2
## z = -0.96342, n = 30, p-value = 0.3353
## alternative hypothesis: true S is not equal to 0
## sample estimates:
##            S         varS          tau 
##  -55.0000000 3141.6666667   -0.1264368
sd_sens_31_60 <- sens.slope(del_norte_standard_dev_31_60$sd_2)
print(sd_sens_31_60)
## 
##  Sen's slope
## 
## data:  del_norte_standard_dev_31_60$sd_2
## z = -0.96342, n = 30, p-value = 0.3353
## alternative hypothesis: true z is not equal to 0
## 95 percent confidence interval:
##  -0.04127290  0.01948511
## sample estimates:
## Sen's slope 
## -0.01048471

Summer and Winter 31-60

Summer temperature standard deviation

# using the 1931- 1960 data frame

del_norte_standard_dev_all_31_60_summer <- del_norte_daily_wy_aver_31_60 %>%
  filter(waterDay >= 244 & waterDay <= 335) %>% # this might be better off as daymonth rather than day of water year due to leap year
  group_by(waterYear) %>% 
  mutate(residual = (all_ave_temp-aver_ann_temp)+avg_T_c-aver_day_temp) %>% 
  mutate(deviation = abs(residual-lag(residual))) %>% 
  group_by(waterYear) %>% 
  mutate(nmbr = n())

del_norte_standard_dev_all_31_60_summer <- del_norte_standard_dev_all_31_60_summer %>% 
  group_by(waterYear) %>% 
  mutate(resid_mean = mean(residual)) %>%
  mutate(sd_1 = residual-resid_mean) %>% 
  mutate(sd_2 = (((sum((sd_1)^2))/((nmbr-1))))^(0.5)) %>%
  distinct(sd_2, .keep_all = TRUE) %>% 
   select(waterYear, sd_2)

del_norte_standard_dev_all_31_60_summer %>% 
  kable(.,'html') %>%
  kable_styling() %>%
  scroll_box(width='250px',height='500px')
waterYear sd_2
1931 1.888859
1932 2.515281
1933 1.773078
1934 2.178365
1935 1.651749
1936 2.257309
1937 3.188203
1938 2.076894
1939 2.112502
1940 2.210223
1941 2.690629
1942 1.918279
1943 2.512231
1944 2.445895
1945 2.823918
1946 2.100722
1947 2.491997
1948 1.911987
1949 2.058556
1950 2.239356
1951 2.907449
1952 1.634368
1953 1.999868
1954 2.631681
1955 2.634244
1956 1.667289
1957 2.449010
1958 1.856575
1959 1.627719
1960 2.053249
ggplot(del_norte_standard_dev_all_31_60_summer, aes(x = waterYear, y = sd_2))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  #geom_line(aes) +
  theme_few() +
  geom_smooth(method = "lm", se=FALSE) +
  ylab('SD') + 
  xlab('Water year')

Summer season SD for water years 1931 - 1960

Mann-Kendall & Sen’s Slope

Summer 31-60 standard deviations.

sd_mk_31_60_summer <- mk.test(del_norte_standard_dev_all_31_60_summer$sd_2)
print(sd_mk_31_60_summer)
## 
##  Mann-Kendall trend test
## 
## data:  del_norte_standard_dev_all_31_60_summer$sd_2
## z = -0.57091, n = 30, p-value = 0.5681
## alternative hypothesis: true S is not equal to 0
## sample estimates:
##             S          varS           tau 
##  -33.00000000 3141.66666667   -0.07586207
sd_sens_31_60_summer <- sens.slope(del_norte_standard_dev_all_31_60_summer$sd_2)
print(sd_sens_31_60_summer)
## 
##  Sen's slope
## 
## data:  del_norte_standard_dev_all_31_60_summer$sd_2
## z = -0.57091, n = 30, p-value = 0.5681
## alternative hypothesis: true z is not equal to 0
## 95 percent confidence interval:
##  -0.02275583  0.01778085
## sample estimates:
##  Sen's slope 
## -0.004027526

Winter temperature standard deviation

# using the 31-60 data frame

del_norte_standard_dev_all_31_60_winter <- del_norte_daily_wy_aver_31_60 %>%
  filter(waterDay >= 32 & waterDay <= 182) %>% # this might be better off as daymonth rather than day of water year due to leap year
  group_by(waterYear) %>% 
  mutate(residual = (all_ave_temp-aver_ann_temp)+avg_T_c-aver_day_temp) %>% 
  mutate(deviation = abs(residual-lag(residual))) %>% 
  group_by(waterYear) %>% 
  mutate(nmbr = n())

del_norte_standard_dev_all_31_60_winter <- del_norte_standard_dev_all_31_60_winter %>% 
  group_by(waterYear) %>% 
  mutate(resid_mean = mean(residual)) %>%
  mutate(sd_1 = residual-resid_mean) %>% 
  mutate(sd_2 = (((sum((sd_1)^2))/((nmbr-1))))^(0.5)) %>%
  distinct(sd_2, .keep_all = TRUE) %>% 
   select(waterYear, sd_2)

del_norte_standard_dev_all_31_60_winter %>% 
  kable(.,'html') %>%
  kable_styling() %>%
  scroll_box(width='250px',height='500px')
waterYear sd_2
1931 4.673504
1932 6.936756
1933 7.204641
1934 4.945747
1935 4.996658
1936 4.113298
1937 5.277946
1938 4.744179
1939 5.727659
1940 6.023052
1941 5.206361
1942 5.098971
1943 4.876158
1944 5.529120
1945 4.144586
1946 5.251968
1947 4.060603
1948 4.943561
1949 5.771299
1950 5.420933
1951 4.599904
1952 4.353527
1953 5.967804
1954 5.514763
1955 5.697445
1956 5.005325
1957 4.613574
1958 4.335631
1959 4.957865
1960 5.745662
ggplot(del_norte_standard_dev_all_31_60_winter, aes(x = waterYear, y = sd_2))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  #geom_line(aes) +
  theme_few() +
  geom_smooth(method = "lm", se=FALSE) +
  ylab('SD') + 
  xlab('Water year')

Winter season SD for water years 1931 - 1960

Mann-Kendall & Sen’s Slope

1931 - 1960 winter Mann-Kendall & Sen’s Slope

sd_mk_31_60_winter <- mk.test(del_norte_standard_dev_all_31_60_winter$sd_2)
print(sd_mk_31_60_winter)
## 
##  Mann-Kendall trend test
## 
## data:  del_norte_standard_dev_all_31_60_winter$sd_2
## z = -0.42818, n = 30, p-value = 0.6685
## alternative hypothesis: true S is not equal to 0
## sample estimates:
##             S          varS           tau 
##  -25.00000000 3141.66666667   -0.05747126
sd_sens_31_60_winter <- sens.slope(del_norte_standard_dev_all_31_60_winter$sd_2)
print(sd_sens_31_60_winter)
## 
##  Sen's slope
## 
## data:  del_norte_standard_dev_all_31_60_winter$sd_2
## z = -0.42818, n = 30, p-value = 0.6685
## alternative hypothesis: true z is not equal to 0
## 95 percent confidence interval:
##  -0.04364955  0.02726869
## sample estimates:
##  Sen's slope 
## -0.006688991

1961-1990

#average water year temperature

del_norte_yearly_wy_aver_61_90 <- del_norte_clean %>%
  filter(waterYear >= 1961 & waterYear <= 1990) %>% 
  group_by(waterYear) %>% 
  mutate(aver_ann_temp = mean(avg_T_c))

#Average temperature by day for all water years:

del_norte_daily_wy_aver_61_90 <- del_norte_yearly_wy_aver_61_90 %>% 
  group_by(daymonth) %>% 
  mutate(aver_day_temp = mean(aver_ann_temp))

#average mean temperature by day for the period of record:

del_norte_daily_wy_aver_61_90 <- del_norte_daily_wy_aver_61_90 %>% 
  group_by(daymonth) %>% 
  mutate(all_ave_temp = mean(del_norte_daily_wy_aver_61_90$aver_day_temp)) %>% 
  group_by(waterYear) %>% 
  mutate(nmbr = n())
  

del_norte_standard_dev_61_90 <- del_norte_daily_wy_aver_61_90 %>% 
  group_by(waterYear) %>% 
  mutate(residual = (all_ave_temp-aver_ann_temp)+avg_T_c-aver_day_temp) %>% 
  mutate(deviation = abs(residual-lag(residual)))

del_norte_standard_dev_61_90 <- del_norte_standard_dev_61_90 %>% 
  group_by(waterYear) %>% 
  mutate(resid_mean = mean(residual)) %>%
  mutate(sd_1 = residual-resid_mean) %>% 
  mutate(sd_2 = (((sum((sd_1)^2))/((nmbr-1))))^(0.5)) %>%
  distinct(sd_2, .keep_all = TRUE) %>% 
   select(waterYear, sd_2)


del_norte_standard_dev_61_90 %>% 
  kable(.,'html') %>%
  kable_styling() %>%
  scroll_box(width='250px',height='500px')
waterYear sd_2
1961 8.645070
1962 9.313239
1963 8.882338
1964 9.483519
1965 9.278163
1966 9.510127
1967 7.979480
1968 9.237955
1969 8.663179
1970 8.584662
1971 8.435023
1972 8.386680
1973 10.008256
1974 8.776010
1975 9.331863
1976 8.607716
1977 9.511305
1978 7.358702
1979 10.471482
1980 8.830537
1981 7.792580
1982 8.553011
1983 8.470010
1984 10.851217
1985 9.322284
1986 8.117289
1987 8.930130
1988 10.122118
1989 9.678175
1990 8.420811
ggplot(del_norte_standard_dev_61_90, aes(x = waterYear, y = sd_2))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  #geom_line(aes) +
  theme_few() +
  geom_smooth(method = "lm", se=FALSE) +
  ylab('SD') + 
  xlab('Water year')

SD for water years 1961 - 1990

1961 - 1990 Mann-Kendall & Sen’s Slope

sd_mk_61_90 <- mk.test(del_norte_standard_dev_61_90$sd_2)
print(sd_mk_61_90)
## 
##  Mann-Kendall trend test
## 
## data:  del_norte_standard_dev_61_90$sd_2
## z = 0, n = 30, p-value = 1
## alternative hypothesis: true S is not equal to 0
## sample estimates:
##            S         varS          tau 
## 1.000000e+00 3.141667e+03 2.298851e-03
sd_sens_61_90 <- sens.slope(del_norte_standard_dev_61_90$sd_2)
print(sd_sens_61_90)
## 
##  Sen's slope
## 
## data:  del_norte_standard_dev_61_90$sd_2
## z = 0, n = 30, p-value = 1
## alternative hypothesis: true z is not equal to 0
## 95 percent confidence interval:
##  -0.03395153  0.03823537
## sample estimates:
##  Sen's slope 
## 0.0001071619

Summer and Winter 61-90

Summer temperature standard deviation

# using the 1961- 1990 data frame

del_norte_standard_dev_all_61_90_summer <- del_norte_daily_wy_aver_61_90 %>%
  filter(waterDay >= 244 & waterDay <= 335) %>% # this might be better off as daymonth rather than day of water year due to leap year
  group_by(waterYear) %>% 
  mutate(residual = (all_ave_temp-aver_ann_temp)+avg_T_c-aver_day_temp) %>% 
  mutate(deviation = abs(residual-lag(residual))) %>% 
  group_by(waterYear) %>% 
  mutate(nmbr = n())

del_norte_standard_dev_all_61_90_summer <- del_norte_standard_dev_all_61_90_summer %>% 
  group_by(waterYear) %>% 
  mutate(resid_mean = mean(residual)) %>%
  mutate(sd_1 = residual-resid_mean) %>% 
  mutate(sd_2 = (((sum((sd_1)^2))/((nmbr-1))))^(0.5)) %>%
  distinct(sd_2, .keep_all = TRUE) %>% 
   select(waterYear, sd_2)

del_norte_standard_dev_all_61_90_summer %>% 
  kable(.,'html') %>%
  kable_styling() %>%
  scroll_box(width='250px',height='500px')
waterYear sd_2
1961 1.778496
1962 2.182501
1963 2.427718
1964 2.764745
1965 2.240313
1966 2.299862
1967 2.741355
1968 1.946541
1969 2.792877
1970 2.980101
1971 2.042169
1972 1.974039
1973 2.613519
1974 2.491231
1975 2.126186
1976 2.117475
1977 1.421161
1978 1.768258
1979 2.387549
1980 2.458460
1981 2.449184
1982 2.525316
1983 2.801718
1984 2.391702
1985 2.143789
1986 1.884837
1987 1.827067
1988 2.187482
1989 2.292524
1990 2.135460
ggplot(del_norte_standard_dev_all_61_90_summer, aes(x = waterYear, y = sd_2))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  #geom_line(aes) +
  theme_few() +
  geom_smooth(method = "lm", se=FALSE) +
  ylab('SD') + 
  xlab('Water year')

Summer season SD for water years 1961 - 1990

Mann-Kendall & Sen’s Slope

Summer 61-90 standard deviations.

sd_mk_61_90_summer <- mk.test(del_norte_standard_dev_all_61_90_summer$sd_2)
print(sd_mk_61_90_summer)
## 
##  Mann-Kendall trend test
## 
## data:  del_norte_standard_dev_all_61_90_summer$sd_2
## z = -0.64228, n = 30, p-value = 0.5207
## alternative hypothesis: true S is not equal to 0
## sample estimates:
##             S          varS           tau 
##  -37.00000000 3141.66666667   -0.08505747
sd_sens_61_90_summer <- sens.slope(del_norte_standard_dev_all_61_90_summer$sd_2)
print(sd_sens_61_90_summer)
## 
##  Sen's slope
## 
## data:  del_norte_standard_dev_all_61_90_summer$sd_2
## z = -0.64228, n = 30, p-value = 0.5207
## alternative hypothesis: true z is not equal to 0
## 95 percent confidence interval:
##  -0.02223571  0.01188126
## sample estimates:
##  Sen's slope 
## -0.006371516

Winter temperature standard deviation

# using the 61-90 data frame

del_norte_standard_dev_all_61_90_winter <- del_norte_daily_wy_aver_61_90 %>%
  filter(waterDay >= 32 & waterDay <= 182) %>% # this might be better off as daymonth rather than day of water year due to leap year
  group_by(waterYear) %>% 
  mutate(residual = (all_ave_temp-aver_ann_temp)+avg_T_c-aver_day_temp) %>% 
  mutate(deviation = abs(residual-lag(residual))) %>% 
  group_by(waterYear) %>% 
  mutate(nmbr = n())

del_norte_standard_dev_all_61_90_winter <- del_norte_standard_dev_all_61_90_winter %>% 
  group_by(waterYear) %>% 
  mutate(resid_mean = mean(residual)) %>%
  mutate(sd_1 = residual-resid_mean) %>% 
  mutate(sd_2 = (((sum((sd_1)^2))/((nmbr-1))))^(0.5)) %>%
  distinct(sd_2, .keep_all = TRUE) %>% 
   select(waterYear, sd_2)

del_norte_standard_dev_all_61_90_winter %>% 
  kable(.,'html') %>%
  kable_styling() %>%
  scroll_box(width='250px',height='500px')
waterYear sd_2
1961 5.075103
1962 5.339809
1963 6.368339
1964 5.044392
1965 5.538406
1966 6.600824
1967 5.624132
1968 6.159665
1969 4.622384
1970 5.227759
1971 6.244877
1972 6.085002
1973 4.688575
1974 6.497403
1975 5.999299
1976 5.654890
1977 5.854291
1978 4.349736
1979 6.843211
1980 4.099797
1981 3.788077
1982 5.759448
1983 3.987298
1984 6.386789
1985 5.608819
1986 5.599562
1987 4.291683
1988 6.239408
1989 6.819955
1990 5.352755
ggplot(del_norte_standard_dev_all_61_90_winter, aes(x = waterYear, y = sd_2))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  #geom_line(aes) +
  theme_few() +
  geom_smooth(method = "lm", se=FALSE) +
  ylab('SD') + 
  xlab('Water year')

Winter season SD for water years 1961 - 1990

Mann-Kendall & Sen’s Slope

1961 - 1990 winter Mann-Kendall & Sen’s Slope

sd_mk_61_90_winter <- mk.test(del_norte_standard_dev_all_61_90_winter$sd_2)
print(sd_mk_61_90_winter)
## 
##  Mann-Kendall trend test
## 
## data:  del_norte_standard_dev_all_61_90_winter$sd_2
## z = -0.21409, n = 30, p-value = 0.8305
## alternative hypothesis: true S is not equal to 0
## sample estimates:
##             S          varS           tau 
##  -13.00000000 3141.66666667   -0.02988506
sd_sens_61_90_winter <- sens.slope(del_norte_standard_dev_all_61_90_winter$sd_2)
print(sd_sens_61_90_winter)
## 
##  Sen's slope
## 
## data:  del_norte_standard_dev_all_61_90_winter$sd_2
## z = -0.21409, n = 30, p-value = 0.8305
## alternative hypothesis: true z is not equal to 0
## 95 percent confidence interval:
##  -0.04412994  0.03477957
## sample estimates:
##  Sen's slope 
## -0.005532806

1991-2020

#average water year temperature

del_norte_yearly_wy_aver_91_20 <- del_norte_clean %>%
  filter(waterYear >= 1991 & waterYear <= 2020) %>% 
  group_by(waterYear) %>% 
  mutate(aver_ann_temp = mean(avg_T_c))

#Average temperature by day for all water years:

del_norte_daily_wy_aver_91_20 <- del_norte_yearly_wy_aver_91_20 %>% 
  group_by(daymonth) %>% 
  mutate(aver_day_temp = mean(aver_ann_temp))

#average mean temperature by day for the period of record:

del_norte_daily_wy_aver_91_20 <- del_norte_daily_wy_aver_91_20 %>% 
  group_by(daymonth) %>% 
  mutate(all_ave_temp = mean(del_norte_daily_wy_aver_91_20$aver_day_temp)) %>% 
  group_by(waterYear) %>% 
  mutate(nmbr = n())
  

del_norte_standard_dev_91_20 <- del_norte_daily_wy_aver_61_90 %>% 
  group_by(waterYear) %>% 
  mutate(residual = (all_ave_temp-aver_ann_temp)+avg_T_c-aver_day_temp) %>% 
  mutate(deviation = abs(residual-lag(residual)))

del_norte_standard_dev_91_20 <- del_norte_standard_dev_91_20 %>% 
  group_by(waterYear) %>% 
  mutate(resid_mean = mean(residual)) %>%
  mutate(sd_1 = residual-resid_mean) %>% 
  mutate(sd_2 = (((sum((sd_1)^2))/((nmbr-1))))^(0.5)) %>%
  distinct(sd_2, .keep_all = TRUE) %>% 
   select(waterYear, sd_2)


del_norte_standard_dev_91_20 %>% 
  kable(.,'html') %>%
  kable_styling() %>%
  scroll_box(width='250px',height='500px')
waterYear sd_2
1961 8.645070
1962 9.313239
1963 8.882338
1964 9.483519
1965 9.278163
1966 9.510127
1967 7.979480
1968 9.237955
1969 8.663179
1970 8.584662
1971 8.435023
1972 8.386680
1973 10.008256
1974 8.776010
1975 9.331863
1976 8.607716
1977 9.511305
1978 7.358702
1979 10.471482
1980 8.830537
1981 7.792580
1982 8.553011
1983 8.470010
1984 10.851217
1985 9.322284
1986 8.117289
1987 8.930130
1988 10.122118
1989 9.678175
1990 8.420811
ggplot(del_norte_standard_dev_91_20, aes(x = waterYear, y = sd_2))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  #geom_line(aes) +
  theme_few() +
  geom_smooth(method = "lm", se=FALSE) +
  ylab('SD') + 
  xlab('Water year')

SD for water years 1991 - 2020

1991 - 2020 Mann-Kendall & Sen’s Slope

sd_mk_91_20 <- mk.test(del_norte_standard_dev_91_20$sd_2)
print(sd_mk_91_20)
## 
##  Mann-Kendall trend test
## 
## data:  del_norte_standard_dev_91_20$sd_2
## z = 0, n = 30, p-value = 1
## alternative hypothesis: true S is not equal to 0
## sample estimates:
##            S         varS          tau 
## 1.000000e+00 3.141667e+03 2.298851e-03
sd_sens_91_20 <- sens.slope(del_norte_standard_dev_91_20$sd_2)
print(sd_sens_91_20)
## 
##  Sen's slope
## 
## data:  del_norte_standard_dev_91_20$sd_2
## z = 0, n = 30, p-value = 1
## alternative hypothesis: true z is not equal to 0
## 95 percent confidence interval:
##  -0.03395153  0.03823537
## sample estimates:
##  Sen's slope 
## 0.0001071619

Summer and Winter 91-20

Summer temperature standard deviation

# using the 1991- 2020 data frame

del_norte_standard_dev_all_91_20_summer <- del_norte_daily_wy_aver_91_20 %>%
  filter(waterDay >= 244 & waterDay <= 335) %>% # this might be better off as daymonth rather than day of water year due to leap year
  group_by(waterYear) %>% 
  mutate(residual = (all_ave_temp-aver_ann_temp)+avg_T_c-aver_day_temp) %>% 
  mutate(deviation = abs(residual-lag(residual))) %>% 
  group_by(waterYear) %>% 
  mutate(nmbr = n())

del_norte_standard_dev_all_91_20_summer <- del_norte_standard_dev_all_91_20_summer %>% 
  group_by(waterYear) %>% 
  mutate(resid_mean = mean(residual)) %>%
  mutate(sd_1 = residual-resid_mean) %>% 
  mutate(sd_2 = (((sum((sd_1)^2))/((nmbr-1))))^(0.5)) %>%
  distinct(sd_2, .keep_all = TRUE) %>% 
   select(waterYear, sd_2)

del_norte_standard_dev_all_91_20_summer %>% 
  kable(.,'html') %>%
  kable_styling() %>%
  scroll_box(width='250px',height='500px')
waterYear sd_2
1991 2.107556
1992 2.327857
1993 2.347764
1994 1.627795
1995 2.551853
1996 2.100201
1997 1.926402
1998 2.600348
1999 2.410172
2000 1.600572
2001 2.019630
2002 1.845975
2003 2.801925
2004 2.332780
2005 2.619140
2006 1.996965
2007 2.363320
2008 2.356730
2009 2.488327
2010 1.954418
2011 2.097681
2012 1.719314
2013 2.269814
2014 2.174603
2015 2.003585
2016 2.357237
2017 2.187614
2018 2.098239
2019 2.398375
2020 2.058420
ggplot(del_norte_standard_dev_all_91_20_summer, aes(x = waterYear, y = sd_2))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  #geom_line(aes) +
  theme_few() +
  geom_smooth(method = "lm", se=FALSE) +
  ylab('SD') + 
  xlab('Water year')

Summer season SD for water years 1991 - 2020

Mann-Kendall & Sen’s Slope

Summer 91-20 standard deviations.

sd_mk_91_20_summer <- mk.test(del_norte_standard_dev_all_91_20_summer$sd_2)
print(sd_mk_91_20_summer)
## 
##  Mann-Kendall trend test
## 
## data:  del_norte_standard_dev_all_91_20_summer$sd_2
## z = -0.10705, n = 30, p-value = 0.9148
## alternative hypothesis: true S is not equal to 0
## sample estimates:
##             S          varS           tau 
##   -7.00000000 3141.66666667   -0.01609195
sd_sens_91_20_summer <- sens.slope(del_norte_standard_dev_all_91_20_summer$sd_2)
print(sd_sens_91_20_summer)
## 
##  Sen's slope
## 
## data:  del_norte_standard_dev_all_91_20_summer$sd_2
## z = -0.10705, n = 30, p-value = 0.9148
## alternative hypothesis: true z is not equal to 0
## 95 percent confidence interval:
##  -0.01570461  0.01192094
## sample estimates:
##   Sen's slope 
## -0.0004937653

Winter temperature standard deviation

# using the 91-20 data frame

del_norte_standard_dev_all_91_20_winter <- del_norte_daily_wy_aver_91_20 %>%
  filter(waterDay >= 32 & waterDay <= 182) %>% # this might be better off as daymonth rather than day of water year due to leap year
  group_by(waterYear) %>% 
  mutate(residual = (all_ave_temp-aver_ann_temp)+avg_T_c-aver_day_temp) %>% 
  mutate(deviation = abs(residual-lag(residual))) %>% 
  group_by(waterYear) %>% 
  mutate(nmbr = n())

del_norte_standard_dev_all_91_20_winter <- del_norte_standard_dev_all_91_20_winter %>% 
  group_by(waterYear) %>% 
  mutate(resid_mean = mean(residual)) %>%
  mutate(sd_1 = residual-resid_mean) %>% 
  mutate(sd_2 = (((sum((sd_1)^2))/((nmbr-1))))^(0.5)) %>%
  distinct(sd_2, .keep_all = TRUE) %>% 
   select(waterYear, sd_2)

del_norte_standard_dev_all_91_20_winter %>% 
  kable(.,'html') %>%
  kable_styling() %>%
  scroll_box(width='250px',height='500px')
waterYear sd_2
1991 6.094841
1992 5.262206
1993 5.601879
1994 5.076673
1995 4.452943
1996 4.845613
1997 5.565064
1998 4.839934
1999 4.355520
2000 4.681749
2001 4.573170
2002 5.564876
2003 4.760996
2004 6.416312
2005 4.856311
2006 4.991127
2007 7.036398
2008 7.257146
2009 5.728112
2010 5.137456
2011 5.784141
2012 6.033889
2013 7.479222
2014 6.422942
2015 5.408038
2016 5.597844
2017 6.234240
2018 3.817411
2019 5.154514
2020 6.144706
ggplot(del_norte_standard_dev_all_91_20_winter, aes(x = waterYear, y = sd_2))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  #geom_line(aes) +
  theme_few() +
  geom_smooth(method = "lm", se=FALSE) +
  ylab('SD') + 
  xlab('Water year')

Winter season SD for water years 1991 - 2020

Mann-Kendall & Sen’s Slope

1991 - 2020 winter Mann-Kendall & Sen’s Slope

sd_mk_91_20_winter <- mk.test(del_norte_standard_dev_all_91_20_winter$sd_2)
print(sd_mk_91_20_winter)
## 
##  Mann-Kendall trend test
## 
## data:  del_norte_standard_dev_all_91_20_winter$sd_2
## z = 1.7127, n = 30, p-value = 0.08676
## alternative hypothesis: true S is not equal to 0
## sample estimates:
##            S         varS          tau 
##   97.0000000 3141.6666667    0.2229885
sd_sens_91_20_winter <- sens.slope(del_norte_standard_dev_all_91_20_winter$sd_2)
print(sd_sens_91_20_winter)
## 
##  Sen's slope
## 
## data:  del_norte_standard_dev_all_91_20_winter$sd_2
## z = 1.7127, n = 30, p-value = 0.08676
## alternative hypothesis: true z is not equal to 0
## 95 percent confidence interval:
##  -0.006930547  0.066125133
## sample estimates:
## Sen's slope 
##  0.03229689

Comparing Climate Normal means

(from 356:)

1991-2022

del_norte_yearly_wy_aver_1991_2022_CN <- del_norte_clean %>%
  filter(waterYear >= 1991 & waterYear <= 2022) %>% 
  group_by(waterYear) %>% 
  mutate(aver_ann_temp = mean(avg_T_c))

#Average temperature by day for all water years:

del_norte_daily_wy_aver_1991_2022_CN <- del_norte_yearly_wy_aver_1991_2022_CN %>% 
  group_by(daymonth) %>% 
  mutate(aver_day_temp = mean(aver_ann_temp))

#average mean temperature by day for the period of record:

del_norte_daily_wy_aver_1991_2022_CN <- del_norte_daily_wy_aver_1991_2022_CN %>% 
  group_by(daymonth) %>% 
  mutate(all_ave_temp = mean(del_norte_daily_wy_aver_1991_2022_CN$aver_day_temp)) %>% 
  group_by(waterYear) %>% 
  mutate(nmbr = n())
del_norte_daily_wy_aver_1991_2022_CN2 <- del_norte_daily_wy_aver_1991_2022_CN %>% 
  #filter(waterYear == "1987" | waterYear == "2021") %>%
  group_by(waterDay) %>%
  mutate(date_temp = mean(avg_T_c))%>% 
  select(waterDay, date_temp) %>% 
  distinct(waterDay, .keep_all = TRUE)
  
del_norte_daily_wy_aver_1991_2022_CN2$date_temp <- signif(del_norte_daily_wy_aver_1991_2022_CN2$date_temp,3) #reduce the sig figs

ggplot(del_norte_daily_wy_aver_1991_2022_CN2, aes(x = waterDay, y = date_temp))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  theme_few()

1961-1990

del_norte_yearly_wy_aver_1961_1990_CN <- del_norte_clean %>%
  filter(waterYear >= 1961 & waterYear <= 1990) %>% 
  group_by(waterYear) %>% 
  mutate(aver_ann_temp = mean(avg_T_c))

#Average temperature by day for all water years:

del_norte_daily_wy_aver_1961_1990_CN <- del_norte_yearly_wy_aver_1961_1990_CN %>% 
  group_by(daymonth) %>% 
  mutate(aver_day_temp = mean(aver_ann_temp))

#average mean temperature by day for the period of record:

del_norte_daily_wy_aver_1961_1990_CN <- del_norte_daily_wy_aver_1961_1990_CN %>% 
  group_by(daymonth) %>% 
  mutate(all_ave_temp = mean(del_norte_daily_wy_aver_1961_1990_CN$aver_day_temp)) %>% 
  group_by(waterYear) %>% 
  mutate(nmbr = n())
del_norte_daily_wy_aver_1961_1990_CN2 <- del_norte_daily_wy_aver_1961_1990_CN %>% 
  #filter(waterYear == "1987" | waterYear == "2021") %>%
  group_by(waterDay) %>%
  mutate(date_temp = mean(avg_T_c))%>% 
  select(waterDay, date_temp) %>% 
  distinct(waterDay, .keep_all = TRUE)
  
del_norte_daily_wy_aver_1961_1990_CN2$date_temp <- signif(del_norte_daily_wy_aver_1961_1990_CN2$date_temp,3) #reduce the sig figs

ggplot(del_norte_daily_wy_aver_1961_1990_CN2, aes(x = waterDay, y = date_temp))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  theme_few()

1931-1960

del_norte_yearly_wy_aver_1931_1960_CN <- del_norte_clean %>%
  filter(waterYear >= 1931 & waterYear <= 1960) %>% 
  group_by(waterYear) %>% 
  mutate(aver_ann_temp = mean(avg_T_c))

#Average temperature by day for all water years:

del_norte_daily_wy_aver_1931_1960_CN <- del_norte_yearly_wy_aver_1931_1960_CN %>% 
  group_by(daymonth) %>% 
  mutate(aver_day_temp = mean(aver_ann_temp))

#average mean temperature by day for the period of record:

del_norte_daily_wy_aver_1931_1960_CN <- del_norte_daily_wy_aver_1931_1960_CN %>% 
  group_by(daymonth) %>% 
  mutate(all_ave_temp = mean(del_norte_daily_wy_aver_1931_1960_CN$aver_day_temp)) %>% 
  group_by(waterYear) %>% 
  mutate(nmbr = n())
del_norte_daily_wy_aver_1931_1960_CN2 <- del_norte_daily_wy_aver_1931_1960_CN %>% 
  #filter(waterYear == "1987" | waterYear == "2021") %>%
  group_by(waterDay) %>%
  mutate(date_temp = mean(avg_T_c))%>% 
  select(waterDay, date_temp)  %>% 
  distinct(waterDay, .keep_all = TRUE)
  
del_norte_daily_wy_aver_1931_1960_CN2$date_temp <- signif(del_norte_daily_wy_aver_1931_1960_CN2$date_temp,3) #reduce the sig figs

ggplot(del_norte_daily_wy_aver_1931_1960_CN2, aes(x = waterDay, y = date_temp))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  theme_few()

1900-1930

del_norte_yearly_wy_aver_1901_1930_CN <- del_norte_clean %>%
  filter(waterYear >= 1901 & waterYear <= 1930) %>% 
  group_by(waterYear) %>% 
  mutate(aver_ann_temp = mean(avg_T_c))

#Average temperature by day for all water years:

del_norte_daily_wy_aver_1901_1930_CN <- del_norte_yearly_wy_aver_1901_1930_CN %>% 
  group_by(daymonth) %>% 
  mutate(aver_day_temp = mean(aver_ann_temp))

#average mean temperature by day for the period of record:

del_norte_daily_wy_aver_1901_1930_CN <- del_norte_daily_wy_aver_1901_1930_CN %>% 
  group_by(daymonth) %>% 
  mutate(all_ave_temp = mean(del_norte_daily_wy_aver_1901_1930_CN$aver_day_temp)) %>% 
  group_by(waterYear) %>% 
  mutate(nmbr = n())
del_norte_daily_wy_aver_1901_1930_CN2 <- del_norte_daily_wy_aver_1901_1930_CN %>% 
  #filter(waterYear == "1987" | waterYear == "2021") %>%
  group_by(waterDay) %>%
  mutate(date_temp = mean(avg_T_c))%>% 
  select(waterDay, date_temp) %>% 
  distinct(waterDay, .keep_all = TRUE)


del_norte_daily_wy_aver_1901_1930_CN2$date_temp <- signif(del_norte_daily_wy_aver_1901_1930_CN2$date_temp,3) #reduce the sig figs

ggplot(del_norte_daily_wy_aver_1901_1930_CN2, aes(x = waterDay, y = date_temp))+#, color = waterYear)) +
  geom_line(size= 0.7) +
  theme_few()

climate_norm <- left_join(del_norte_daily_wy_aver_1991_2022_CN2, del_norte_daily_wy_aver_1961_1990_CN2, by= 'waterDay') 

climate_norm <- left_join(climate_norm, del_norte_daily_wy_aver_1931_1960_CN2, by= 'waterDay')

climate_norm <- left_join(climate_norm, del_norte_daily_wy_aver_1901_1930_CN2, by= 'waterDay')

ggplot(climate_norm, aes(x=waterDay)) +  
         #scale_size_manual(values=c("FALSE"=5,"TRUE"=8)) +
  #scale_color_manual(values=c("FALSE"='#CC0000',"TRUE"='black')) +
geom_line(aes(y = date_temp.x), size =1, color = "orange")+
  geom_line(aes(y = date_temp.y), size =1, color = "darkgreen")+
  geom_line(aes(y = date_temp.x.x), size =1, color = "purple")+
  geom_line(aes(y = date_temp.y.y), size =1, color= "red")+
  theme_few()+
  scale_colour_manual("", breaks=c("date_temp.x","date_temp.y","date_temp.x.x", "date_temp.y.y"), values=c("date_temp.x" = "orange", "date_temp.y" = "darkgreen", "date_temp.x.x" = "purple", "date_temp.y.y" = "red"))+
  xlab("Day of Year")+
  ylab("Average temperature")